.TH "pfsinppm" 1
.SH NAME
pfsinppm \- Load images or frames in PBM formats
.SH SYNOPSIS
.B pfsinppm
(<file> [--linear] [--absolute <max_lum>] [--frames <range>] [--skip-missing])  [<file>...]

.SH DESCRIPTION
.I pfsinppm
command loads images in PBM formats (PPM, PNM or PGM) and writes
\fIpfs\fR stream to the standard output. The \fIpfs\fR stream is
usually piped to another program for further processing. To detect the
format automatically based on the extension, use \fIpfsin\fR
command. For more information on PBM formats, refer to the NetPBM web page
(http://netpbm.sourceforge.net/).
.PP
Note that PPM or PNM images are low dynamic range. Therefore pixel
values (0-255) are scaled to 0-1 before
storing them in pfs stream. Similarly, before writing low dynamic
range image from pfs stream, pixel values are multiplied by 255.  By
default, the 'LUMINANCE' tag is set to 'DISPLAY'. The '--linear' switch can force the
inverse sRGB transformation and provide linear data. In this case the 'LUMINANCE'
tag is set to 'RELATIVE'. '--absolute' switch can
be used to convert pixels to absolute luminance values.
.PP
To read images from standard input use a single dash '-' instead of
filename. The images are read until EOF is reached.
.PP
Each file can contain a \%%d pattern, which is substituted with frame
numbers. The pattern has the same syntax as C
.I printf
command. For example, you can use \%%04d to make the frame number
four digit with proceedings zeros. See the OPTIONS section below for details.
.SH OPTIONS
.TP
.B \--frames <range>
Range is given in mathlab / octave format:

.B "startframe:step:endframe"

Frame numbers start with
.B "startframe"
(default 0), are increased by
.B "step"
(default 1) and stop at
.B "endframe"
You can skip one of those values, for example
.I "1:100"
for frames 1,2,...,100 and
.I 0:2:
for frame 0,2,4,... up to the last file that exists.

.TP
.B \--skip-missing
Skip up to ten frames in a row if corresponding files are
missing. Otherwise the program stops reading sequence at the first
file that does not exists. This switch does not apply to the first
frame in a sequence. This switch can be useful if there is a rendered
animation where some of the frame has not been generated.

.TP
.B \--linear, -l
Converts pixel values to linear luminance (XYZ), assuming the sRGB
color space for the input image. The maximum pixel value (255,255,255)
is mapped to Y=1. \fILUMINANCE\fR tag is set to RELATIVE.

.TP
.B \--absolute <max_lum>, -a <max_lum>
\fB--absolute\fR converts pixel values to an absolute linear luminance
(XYZ), that is the color space, in which channel Y contains luminance
given in cd/m^2. The sRGB color space is assumed for the input
image. The maximum pixel value (255,255,255) is mapped to
Y=\fI<max_lum>\fR. \fI<max_lum>\fR is typically set to 80 [cd/m^2] for
a CRT monitor. \fILUMINANCE\fR tag is set to
ABSOLUTE. \fB--absolute\fR process images almost the same as
\fB--relative\fR, but additionally it scales all pixels by
\fI<max_lum>\fR.

.SH EXAMPLES
.TP
pfsinppm frame\%%04d.ppm \--frames 0:10 | pfsview

Read frames from files frame0000.ppm, frame0001.ppm, ...,
frame0010.ppm and show them using pfsview.

.SH BUGS
Please report bugs and comments on implementation to 
the discussion group http://groups.google.com/group/pfstools
.SH "SEE ALSO"
.BR pfsin (1),
.BR pfsout (1)


